/**
 * @description 求最长子串
 * @param {string} s
 * @return {number} 最长子串的长度
 */
var lengthOfLongestSubstring = function (s) {
    // 接受所有不重复的子串
    var allArr = [];
    // 输入字符串转换成数组
    var sArr = s.split('');
    // 临时字符串
    var tempStr = "";
    // 开始遍历
    for (let i = 0; i < sArr.length; i++) {
        // 将单个字符加入子串数组
        if (!allArr.includes(sArr[i])) {
            allArr.push(sArr[i]);
        }
        // 查看字符是否在临时子串中出现过
        var checkIndex = tempStr.split('').findIndex(v => v === sArr[i]);
        if (checkIndex != -1) {
            // 如果出现过,截取没有出现过的那一部分,加上当前字符,组合成新的临时子串
            tempStr = tempStr.substring(checkIndex + 1, tempStr.split('').length) + sArr[i];
        } else {
            // 没有出现过直接追加,组合成新的临时子串
            tempStr += sArr[i];
        }
        // 判断子串数组中是否包含了临时子串,如果没有进行追加
        if (!allArr.includes(tempStr)) {
            allArr.push(tempStr);
        }
    }
    // reduce方法找出最长的字符串的长度
    return allArr.reduce((last, now) => now.split('').length > last ? now.split('').length : last, 0)
};